/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package Modelo;

import java.io.Serializable;
import java.sql.CallableStatement;
import java.sql.Connection;
import java.sql.ResultSet;
import java.util.ArrayList;
import java.util.Date;

/**
 *
 * @author HNCR
 */
public class Cliente implements Serializable{
    private int cod_cliente;
    private String nombre;
    private Date fecha_registro;
    private int estado;
    private String est;

    public Cliente() {
    }

    public int getCod_cliente() {
        return cod_cliente;
    }

    public void setCod_cliente(int cod_cliente) {
        this.cod_cliente = cod_cliente;
    }

    public String getNombre() {
        return nombre;
    }

    public void setNombre(String nombre) {
        this.nombre = nombre;
    }

    public Date getFecha_registro() {
        return fecha_registro;
    }

    public void setFecha_registro(Date fecha_registro) {
        this.fecha_registro = fecha_registro;
    }

    public int getEstado() {
        return estado;
    }

    public void setEstado(int estado) {
        this.estado = estado;
    }

    public String getEst() {
        return est;
    }

    public void setEst(String est) {
        this.est = est;
    }

    //==========================================================================
    //-------------registro----
    //el registro de un cliente se hace dentro del procedimiento de creacion de factura
    /*
    public static boolean registrarCliente (Cliente a)
    {
        boolean estado = false ;
        Connection conexion=null;
         try{
             conexion=ControladorBD.darConexionBD();
             CallableStatement st=conexion.prepareCall(" {CALL sp_cliente_registro "
                     +"(?,?)} ");
             st.setString(1,a.getNombre());              
             st.registerOutParameter(2,java.sql.Types.INTEGER);
             st.execute();
             a.setCod_cliente(st.getInt(2));
             String val=""+a.getCod_cliente();
             //System.out.print(val);
             if(val!=null)
             {
                 estado=true;
             }
        st.close();
        conexion.close();
             
         } catch(Exception error){
             System.out.println("Error en el metodo por: "+ error.getMessage());
                                 error.printStackTrace();
         }
         
        return estado;  
        
    } 
    */
    //---------buscar - listar
    public static ArrayList<Cliente> getBuscarCliente(Cliente cliente){
     ArrayList<Cliente> arreglo=null;
     ResultSet rs=null;
        Cliente obj=null;
        Connection conexion = null;
        try{
           conexion = ControladorBD.darConexionBD();
           conexion.setAutoCommit(false);
           conexion = ControladorBD.darConexionBD();
            CallableStatement st = conexion.prepareCall( "{CALL sp_cliente_buscar(?)}");
            st.setString(1, cliente.getNombre());
            rs = st.executeQuery();
            if (rs.next()){
               arreglo=new ArrayList<Cliente>();   
                do{
                        obj =new Cliente();                        
                        obj.setCod_cliente(rs.getInt("cod_cliente"));
                        obj.setNombre(rs.getString("nombre"));
                        obj.setFecha_registro(rs.getDate("fecha_registro"));
                        arreglo.add(obj);
                }while (rs.next());
            }
            st.close();
            conexion.setAutoCommit(true);
            conexion.close();
        }catch(Exception error){
            System.out.println("Error en el metodo por: " + error.getMessage());
            error.printStackTrace();
        }
        return arreglo;

    }
    
    //---------- listar
    public static ArrayList<Cliente> getListarCliente(){
     ArrayList<Cliente> arreglo=null;
     ResultSet rs=null;
        Cliente obj=null;
        Connection conexion = null;
        try{
           conexion = ControladorBD.darConexionBD();
           conexion.setAutoCommit(false);
           conexion = ControladorBD.darConexionBD();
            CallableStatement st = conexion.prepareCall( "{CALL sp_cliente_listar()}");
            rs = st.executeQuery();
            if (rs.next()){
               arreglo=new ArrayList<Cliente>();   
                do{
                        obj =new Cliente();                        
                        obj.setCod_cliente(rs.getInt("cod_cliente"));
                        obj.setNombre(rs.getString("nombre"));
                        obj.setFecha_registro(rs.getDate("fecha_registro"));
                        obj.setEstado(rs.getInt("estado"));
                        if(obj.getEstado()==1){
                            obj.setEst("ACTIVO");
                        }else{
                            obj.setEst("INACTIVO");
                        } 
                        arreglo.add(obj);
                }while (rs.next());
            }
            st.close();
            conexion.setAutoCommit(true);
            conexion.close();
        }catch(Exception error){
            System.out.println("Error en el metodo por: " + error.getMessage());
            error.printStackTrace();
        }
        return arreglo;

    }
    
}
